import cv2
import numpy as np
from utils.common import load_image, make_dirs  # 导入公共函数
from utils.config import exp4_edge_path, exp4_output_dir  # 导入输出路径

def edge_detection(image, low_threshold=100, high_threshold=200):
    """
    使用 Canny 算法进行边缘检测
    :param image: 输入灰度图像
    :param low_threshold: Canny 低阈值
    :param high_threshold: Canny 高阈值
    :return: 边缘检测结果
    """
    edges = cv2.Canny(image, low_threshold, high_threshold)
    return edges

def main():
    # 确保输出目录存在
    make_dirs(exp4_output_dir)

    # 加载图片
    image = load_image()  # 使用公共函数加载图像

    # 将图像转换为灰度图像
    gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

    # 使用 Canny 算法进行边缘检测
    edges = edge_detection(gray_image, low_threshold=100, high_threshold=200)

    # 显示结果
    cv2.imshow("Original Image", gray_image)
    cv2.imshow("Edges", edges)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    # 保存结果
    cv2.imwrite(f"{exp4_output_dir}/edges_result.jpg", edges)

if __name__ == "__main__":
    main()